/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package uppgift3;

/**
 *
 * @author marjo20
 */
public class SSN 
{
 private String personnummer;
 private boolean ssnOK = false;

   public SSN(String ssn)
    {
       // Om det är ok då
       if(isOK(ssn))
       {
        if(ssn.length()==11)
            personnummer=ssn;
        else
            personnummer = ssn.substring(0,6)+"-"+ssn.substring(6);
       }
       //Annars
       else
       personnummer = "" ;
    }

 public boolean isOK(String ssn)
   {
   int len = ssn.length();
    
    if((len == 10)||(len == 11))
    {
   //om antal tecken är 11 kontrollera om 7:e tecknet är ett bindestreck
    if(len == 11)
    {
    char c6 = ssn.charAt(6);
    if (c6 == '-')
    {
        for (int i=0;i<len;i=i+1)
        {
        char c = ssn.charAt(i);
        if(i!=6)
        {
        if (Character.isDigit(c))
            {
            ssnOK = true;
            continue;
            }
        else
            {
            ssnOK = false;
            break;
            }

        }// END IF(i!= 6)
        } // END FOR

    return ssnOK;
    }
   else
      return ssnOK;
    }// Lengden är 11

   //om 11 tecken, kontrollera även om alla tecken, förutom 7:e, är siffror
//om 10 tecken kontrollera om alla är siffror
   if(len == 10)
     {
        for (int i=0;i<len;i=i+1)
        {
        char c = ssn.charAt(i);
        if (Character.isDigit(c))
            {
            ssnOK = true;
            continue;
            }
        else
            {
            ssnOK = false;
            break;
            }
 
        }// END FOR
        return ssnOK;
     }
    return ssnOK;
   } // OM LENGDEN ÄR 10 eller 11

    else
        return ssnOK;


   }

 public boolean isMale()
 //om personnumret är OK genomförs detta: om näst sista tecknet är en udda
 //siffra returneras sant
    {
       if (ssnOK)
       {
       char genus = personnummer.charAt(personnummer.length()-2);
       int x = Character.digit(genus, 10);
       if(x % 2 != 0)
             //if ((genus == '1') ||(genus == '3')'5''7''9')
                 return true;
             else
                 return false;
        }
       return false;
 }

 public boolean isFemale()
 //om personnumret är OK genomförs detta: om näst sista tecknet är en jämn
 //siffra returneras sant
    {
     //return !isMale();
     if (ssnOK)
       {
       char genus = personnummer.charAt(personnummer.length()-2);
       int x = Character.digit(genus, 10);
       if(x % 2 == 0)
                 return true;
             else
                 return false;
        }
       return false;
    }

 //returnera personnumret som en sträng i formen xxxxxx-xxxx
public String toString()
    {
    return personnummer;

    }

}
